package HashMap.project;

import java.util.HashMap;
import java.util.Map;

/*
    HashMap()实现类的是使用：
    特点：使用哈希表（数组+链表+红黑树）存储，没有下标，无序
    判断是否重复：重写hashCode() 方法和equals()方法，因为是哈希表存储结构
 */
public class PracticeMain {
    public static void main(String[] args) {
        HashMap<Student,String > hashMap = new HashMap<Student, String>();
        Student s1 = new Student("张三",22);
        Student s2 = new Student("李四",23);
        Student s3 = new Student("王五",24);
        hashMap.put(s1,"青山");
        hashMap.put(s2,"昆区");
        hashMap.put(s3,"东河");
        System.out.println(hashMap.size());
        System.out.println(hashMap.toString());
        //加入相同的键，值会被覆盖
        hashMap.put(s3,"覆盖值");
        System.out.println(hashMap.toString());
        //判断加入的是否重复，需要重写hashCode() 方法和equals()方法，值没关系，因为可以重复，但是键不能重复（重复的话会把值覆盖掉）
        hashMap.put(new Student("王五",24),"东河");
        System.out.println(hashMap.size());

        //遍历：
        for (Map.Entry<Student,String> entry : hashMap.entrySet()) {
            System.out.println(entry.getKey()+"    "+entry.getValue());//获取键和值
        }
    }
}
